/**
 * Wielobok.h
 *
 * Version: $Id: Wielobok.h 75 2012-01-02 16:07:53Z s8376@pjwstk.edu.pl $
 */

#ifndef WIELOBOK_H_
#define WIELOBOK_H_

class Wielobok
{
    private:
        Punkt** m_points;
        int m_pointsNum;
        void _checkVertexesIsNotNull();
        void _checkVertexNum(int);
    public:
        Wielobok(int);
        Wielobok(const Wielobok&);
        ~Wielobok();
        /**
         * Zwiększa ilość boków o n
         */
        void increase(int);
        /**
         * Zmniejsza ilość boków o n (funkcja usuwa boki od końca wieloboku)
         */
        void decrease(int);
        /**
         * Wstawia kopię punktu wskazywanego przez p, na pozycję pos, jeżeli na tej
         * pozycji był już jakiś punkt to powinien on zostać usunięty
         */
        void set(Punkt *p, int n);
        /**
         * Usuwa punkt z wieloboku z pozycji pos
         */
        void deletepoint(int n);
        /**
         * Wypisuje informacje o wieloboku na konsoli
         */
        void show();
        /**
         * Zwraca obwód wieloboku
         */
        double getParimeter();
};

#endif /* WIELOBOK_H_ */
